Update the state of the cell view when the state of the button changes (to
authorMatthias Clasen <mclasen@redhat.com>
Mon, 1 Nov 2004 04:38:24 +0000 (04:38 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Mon, 1 Nov 2004 04:38:24 +0000 (04:38 +0000)
2004-10-31  Matthias Clasen  <mclasen@redhat.com>

* gtk/gtkcombobox.c (gtk_combo_box_button_state_changed): Update the
state of the cell view when the state of the button changes (to
get prelighted drawing right).  (#138650, Frances Keenan, Christian Persch)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkcombobox.c

index 81a75c176a6927fd95d7bd83aa00d901acf44538..0ff469bbe23dcb1a56af952a5a096cfc615cb1ea 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2004-10-31  Matthias Clasen  <mclasen@redhat.com>
 
+       * gtk/gtkcombobox.c (gtk_combo_box_button_state_changed): Update the
+       state of the cell view when the state of the button changes (to 
+       get prelighted drawing right).  (#138650, Frances Keenan, Christian Persch)
+
        * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup): 
        Don't force the height of the action area, we don't scroll 
        it anyway, and the current way of calculating the height can lead
index 81a75c176a6927fd95d7bd83aa00d901acf44538..0ff469bbe23dcb1a56af952a5a096cfc615cb1ea 100644 (file)
@@ -1,5 +1,9 @@
 2004-10-31  Matthias Clasen  <mclasen@redhat.com>
 
+       * gtk/gtkcombobox.c (gtk_combo_box_button_state_changed): Update the
+       state of the cell view when the state of the button changes (to 
+       get prelighted drawing right).  (#138650, Frances Keenan, Christian Persch)
+
        * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup): 
        Don't force the height of the action area, we don't scroll 
        it anyway, and the current way of calculating the height can lead
index 81a75c176a6927fd95d7bd83aa00d901acf44538..0ff469bbe23dcb1a56af952a5a096cfc615cb1ea 100644 (file)
@@ -1,5 +1,9 @@
 2004-10-31  Matthias Clasen  <mclasen@redhat.com>
 
+       * gtk/gtkcombobox.c (gtk_combo_box_button_state_changed): Update the
+       state of the cell view when the state of the button changes (to 
+       get prelighted drawing right).  (#138650, Frances Keenan, Christian Persch)
+
        * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup): 
        Don't force the height of the action area, we don't scroll 
        it anyway, and the current way of calculating the height can lead
index 81a75c176a6927fd95d7bd83aa00d901acf44538..0ff469bbe23dcb1a56af952a5a096cfc615cb1ea 100644 (file)
@@ -1,5 +1,9 @@
 2004-10-31  Matthias Clasen  <mclasen@redhat.com>
 
+       * gtk/gtkcombobox.c (gtk_combo_box_button_state_changed): Update the
+       state of the cell view when the state of the button changes (to 
+       get prelighted drawing right).  (#138650, Frances Keenan, Christian Persch)
+
        * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup): 
        Don't force the height of the action area, we don't scroll 
        it anyway, and the current way of calculating the height can lead
index f6dace279f43ef40ffec29fd81edfb6f8f98916a..aabb3b3c1e8d66679f46c84092718e41e3ca0e26 100644 (file)
@@ -225,6 +225,9 @@ static void     gtk_combo_box_style_set            (GtkWidget       *widget,
                                                     GtkStyle        *previous);
 static void     gtk_combo_box_button_toggled       (GtkWidget       *widget,
                                                     gpointer         data);
+static void     gtk_combo_box_button_state_changed (GtkWidget       *widget,
+                                                   GtkStateType     previous,
+                                                   gpointer         data);
 static void     gtk_combo_box_add                  (GtkContainer    *container,
                                                     GtkWidget       *widget);
 static void     gtk_combo_box_remove               (GtkContainer    *container,
@@ -778,6 +781,23 @@ gtk_combo_box_state_changed (GtkWidget    *widget,
   gtk_widget_queue_draw (widget);
 }
 
+static void
+gtk_combo_box_button_state_changed (GtkWidget    *widget,
+                                   GtkStateType  previous,
+                                   gpointer      data)
+{
+  GtkComboBox *combo_box = GTK_COMBO_BOX (data);
+
+  if (GTK_WIDGET_REALIZED (widget))
+    {
+      if (!combo_box->priv->tree_view && combo_box->priv->cell_view)
+       gtk_widget_set_state (combo_box->priv->cell_view, 
+                             GTK_WIDGET_STATE (widget));
+    }
+
+  gtk_widget_queue_draw (widget);
+}
+
 static void
 gtk_combo_box_check_appearance (GtkComboBox *combo_box)
 {
@@ -2301,6 +2321,9 @@ gtk_combo_box_menu_setup (GtkComboBox *combo_box,
   g_signal_connect (combo_box->priv->button, "button_press_event",
                     G_CALLBACK (gtk_combo_box_menu_button_press),
                     combo_box);
+  g_signal_connect (combo_box->priv->button, "state_changed",
+                   G_CALLBACK (gtk_combo_box_button_state_changed), 
+                   combo_box);
 
   /* create our funky menu */
   menu = gtk_menu_new ();
@@ -2451,6 +2474,10 @@ gtk_combo_box_menu_destroy (GtkComboBox *combo_box)
                                         G_SIGNAL_MATCH_DATA,
                                         0, 0, NULL,
                                         gtk_combo_box_menu_button_press, NULL);
+  g_signal_handlers_disconnect_matched (combo_box->priv->button,
+                                        G_SIGNAL_MATCH_DATA,
+                                        0, 0, NULL,
+                                        gtk_combo_box_button_state_changed, combo_box);
 
   /* unparent will remove our latest ref */
   gtk_widget_unparent (combo_box->priv->button);